package zy;


import zy.service.UserService;
import zy.service.impl.UserServiceImpl;
import java.lang.reflect.Proxy;

/**
 * @author LittleDesire
 * @description
 * @date 2022-03-29 周二 18:10
 * @since 17
 */
public class App {
    public static void main(String[] args) {
        // 获取目标对象
        UserService userService = new UserServiceImpl();
        // 获取代理对象
        UserService userProxy = (UserService)Proxy.newProxyInstance(
                // 获取类加载器
                userService.getClass().getClassLoader(),
                // 获取目标对象实现的所有接口
                userService.getClass().getInterfaces(),
                // 获取一个InvocationHandler()实例对象
                (proxy, method, args1) -> {
                    // 代理对象执行的方法， 会在该方法中调用目标对象的方法
                    System.out.println("前");
                    // 传入目标对象，调用第一个方法
                    String o = userService.song("听妈妈的话");
//                    Object o = method.invoke(userService, (Object) args[0]);
                    System.out.println("后");
                    return o;
                });

        // 通过代理对象执行目标对象的方法
        System.out.println(userProxy);
    }
}
